로그 없는 아파치 SSL 오류, strace로 분석한 실전 트러블슈팅
1줄 요약
httpd -t 구문 검사는 정상이지만 메인 에러로그 없이 데몬이 즉시 죽는 경우, strace httpd -X 포그라운드 실행으로 추적하면 특정 가상호스트 전용 로그 fd에 기록된 SSL Passphrase 및 키 페어 불일치 오류를 즉시 찾아낼 수 있다.
1. 장애 현상: 소리 없이 죽는 Apache (Silent Failure)
SSL 인증서 갱신 후 Apache 데몬 기동이 실패했다. 일반적인 장애와 달리 단서가 없는 상태였다.
- 설정 파일 문법:
httpd -t실행 시Syntax OK정상 반환 - 메인 에러 로그:
/var/log/httpd/error_log에 아무런 에러 메시지가 기록되지 않음
프로세스가 시작하자마자 어떤 로그도 남기지 않고 즉시 종료되는 'Silent Failure' 상태였으므로, 시스템 콜 레벨에서 원인을 파악하기 위해 strace를 투입했다.
2. strace를 통한 시스템 콜 추적
Apache를 단일 프로세스/포그라운드 디버그 모드(-X)로 기동하면서 시스템 콜을 캡처했다.
bash
# strace로 Apache 기동 과정 추적
strace /usr/sbin/httpd -X 2>&1 | tail -n 50strace 출력의 마지막 부분에서 프로세스가 비정상 종료(exit_group(1))된 결정적 단서가 포착되었다.
c
// 1. SSL Passphrase 스크립트 실행 (파이프 통신)
pipe([206, 207]) = 0
clone(...) = 2834
read(206, "8", 1) ... // 암호 획득
// 2. 개인키 파일 로드
open("/etc/httpd/ssl/key.pem", O_RDONLY) = 203
read(203, "-----BEGIN RSA PRIVATE KEY-----\r"..., 4096) = 1781
// 3. 특정 가상호스트 전용 로그(fd=46)에 에러 출력 후 프로세스 즉시 종료
write(46, "[Thu May 21 05:31:27 2026] [error] SSL Library Error: ...", 63) = 63
exit_group(1)핵심 발견: 메인 에러로그가 아닌 가상호스트 fd(46)에만 기록됨
write 시스템 콜의 파일 디스크립터가 46이었다. 즉, 메인 /var/log/httpd/error_log가 아니라 특정 VirtualHost 설정에 정의된 별도 로그 파일에 에러를 쓰고 데몬이 죽어버렸기 때문에 메인 로그에서는 아무것도 보이지 않았던 것이다.
3. 원인 규명 및 해결 조치
원인은 새로 갱신된 key.pem의 암호화 방식 변경 및 인증서와의 모듈러스(Modulus) 해시 불일치였다.
bash
# 1. 인증서와 개인키의 모듈러스 해시 일치 여부 검증
openssl x509 -noout -modulus -in /etc/httpd/ssl/cert.pem | openssl md5
openssl rsa -noout -modulus -in /etc/httpd/ssl/key.pem | openssl md5
# -> 두 MD5 해시값이 반드시 일치해야 정상 페어임
# 2. Passphrase가 걸려있는지 확인
openssl rsa -in /etc/httpd/ssl/key.pem -check- 인증서와 짝이 맞는 올바른 개인키 파일로 교체.
SSLPassPhraseDialog스크립트가 반환하는 비밀번호와 개인키 암호를 일치시키거나 Passphrase가 제거된 키로 재배치.- Apache 정상 재기동 완료.
4. 핵심 체크포인트 (Gotchas)
httpd -X포그라운드 디버그 모드: 백그라운드 포크(Fork) 없이 단일 스레드로 실행되므로strace나gdb분석 시 필수 옵션이다.- VirtualHost 에러로그 분산 주의: SSL 핸드셰이크나 키 로딩 실패는 메인 로그가 아닌 해당 가상호스트의
ErrorLog지시자에만 남을 수 있으므로 모든 vhost 로그를 확인해야 한다. - OpenSSL Modulus 검증 습관화: 인증서 갱신 작업 시 배포 전
openssl md5모듈러스 비교를 자동화 스크립트에 포함하면 이러한 휴먼 에러를 100% 예방할 수 있다.
게시된 시간: 2026-05-21 05:47:07수정한 시간: 2026-08-15 13:57:00